A prefab template node contains information that is required to create node instances: the metaclass of the node, the (initial) property values of the node, information about the bindings and node components of the node, and the list of of child nodes. More...
#include <kanzi/core.ui/template/prefab.hpp>
Public Types | |
| using | BindingContainer |
| Container for info on bindings to set into the node. | |
| using | ChildContainer |
| Container for prefab template node children. | |
| using | ConstChildIterator |
| Const iterator into the child container. | |
| using | InstanceReferenceContainer |
| Container for instance references to add to the node. | |
| using | NodeComponentTemplateContainer |
| Container for node components to create for the node. | |
| using | PlaceholderReferenceContainer |
| Container for prefab placeholders to add to the node. | |
| using | PropertyContainer |
| Container for properties to add to the node. | |
| using | PropertyEntry |
| Entry of a property to be added to the node. | |
Public Types inherited from kanzi::PropertyObject | |
| using | PropertyStorageConstIterator |
| using | PropertyStorageContainer |
| using | PropertyStorageIterator |
| using | PropertyStoragePtr |
| using | PropertyStorageReverseIterator |
Public Member Functions | |
| void | addBinding (BindingLoadInfo createInfo) |
| Adds a binding to the prefab template node. | |
| void | addChild (PrefabTemplateNodeSharedPtr child) |
| Adds a child for the prefab template node. | |
| void | addProperty (AbstractPropertyType propertyType, const Variant &value) |
| Adds a property value to the prefab template node. | |
| void | addResourceDictionaryEntry (const ResourceID &resourceID, string_view resourceURL) |
| Adds an entry to the resource dictionary of the prefab template node. | |
| void | cleanupInstances () |
| Cleans up expired elements from instances. | |
| const Metaclass * | getMetaclass () const |
| Gets the metaclass of the prefab template node. | |
| NodeSharedPtr | instantiate (NodeSharedPtr templateRoot) |
| Creates a tree of nodes by instantiating a prefab template node and its children. | |
| PrefabTemplateNode (Domain *domain, string_view name) | |
| Constructor. | |
| ~PrefabTemplateNode () override | |
| Destructor. | |
Public Member Functions inherited from kanzi::Resource | |
| size_t | getCPUMemoryUsage () const |
| Gets the amount of CPU memory used by the resource. | |
| const string & | getName () const |
| Gets the resource name. | |
| const string & | getUrl () const |
| Gets the resource URL. | |
| bool | isKeepAlive () const |
| Tells if the resource has keep alive flag set. | |
| void | reload () |
| void | reloadFromFile (string_view filePath) |
| void | reloadFromKzb (KzbFile &kzbFile, ReadOnlyMemoryFile &file, KzbMemoryParser &parser) |
| void | setKeepAlive (bool keepAlive) |
| Sets the keep alive flag. | |
| void | setUrl (string_view url) |
| Sets the resource URL. | |
| ~Resource () override | |
| Destructor. | |
Public Member Functions inherited from kanzi::Object | |
| AppliedStyleEntrySharedPtr | applyObjectStyle (kanzi::StyleSharedPtr style) |
| Applies a style to an object. | |
| void | applyObjectStyles () |
| Apply all styles for an object node. | |
| Domain * | getDomain () const |
| Returns the domain the object belongs to. | |
| const Metaclass * | getDynamicMetaclass () const override |
| Returns the metaclass of the dynamic type of the object. | |
| MainLoopScheduler * | getMainLoopScheduler () const |
| Returns the MainLoopScheduler instance of the associated Domain. | |
| detail::MessageDispatcher * | getMessageDispatcher () const |
| Returns the message dispatcher of the object. | |
| ResourceManager * | getResourceManager () const |
| Returns the resource manager of the object. | |
| ScriptingContextSharedPtr | getScriptingContext () const |
| Gets the scripting context of the object. | |
| Object (Domain *domain) | |
| void | setScriptingContext (ScriptingContextSharedPtr context) |
| Sets the scripting context of the object. | |
| void | unapplyObjectStyle (AppliedStyleEntrySharedPtr appliedStyleEntry) |
| void | unapplyObjectStyles () |
| Unapplies and removes all applied styles. | |
| ~Object () override | |
Public Member Functions inherited from kanzi::MetaObject | |
| bool | isTypeOf (const Metaclass *objectType) const |
| Determines if the type of this object is the given type or derived from it. | |
| virtual | ~MetaObject () |
Public Member Functions inherited from kanzi::PropertyObject | |
| template<typename DataType > | |
| void | addPropertyModifier (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner) |
| Adds a property modifier. | |
| template<typename DataType > | |
| void | addPropertyModifierWithoutNotifyingHandlers (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner) |
| Adds a property modifier without notifying handlers. | |
| template<typename DataType > | |
| void | addPropertyNotificationHandler (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::NotificationCallback callback, void *owner) |
| template<typename DataType > | |
| void | addPropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, PropertyValuePrecedence precedence, AbstractPropertyTypeDescriptor::ValueSourceOwner *owner) |
| template<typename DataType > | |
| void | addPropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, PropertyValuePrecedence precedence, void *ownerPointer) |
| PropertyStorageContainer::iterator | beginPropertyStorage () |
| Returns the begin iterator to the internal property storage container. | |
| PropertyStorageContainer::const_iterator | beginPropertyStorage () const |
| Returns the begin iterator to the internal property storage container. | |
| void | clearPropertyFlag (AbstractPropertyType propertyType, uint32_t flag) |
| void | copyLocalValue (const PropertyObject &other, AbstractPropertyType propertyType) |
| Copies local value of single property from another object. | |
| void | copyLocalValues (const PropertyObject &other) |
| Copies all local values from another object. | |
| PropertyStorageContainer::iterator | endPropertyStorage () |
| Returns the end iterator to the internal property storage container. | |
| PropertyStorageContainer::const_iterator | endPropertyStorage () const |
| Returns the end iterator to the internal property storage container. | |
| template<typename DataType > | |
| PropertyType< DataType >::Traits::ReturnType | getAbstractProperty (AbstractPropertyType abstractPropertyType) const |
| template<typename DataType > | |
| PropertyType< DataType >::Traits::ReturnType | getAbstractPropertyBase (AbstractPropertyType abstractPropertyType) const |
| template<typename DataType > | |
| optional< typename PropertyType< DataType >::Traits::ReturnType > | getOptionalAbstractProperty (AbstractPropertyType abstractPropertyType) const |
| template<typename DataType > | |
| optional< typename PropertyType< DataType >::Traits::ReturnType > | getOptionalProperty (const PropertyType< DataType > &propertyType) const |
| Evaluates the property value in the same way as the overload above but does not default to the value in property metadata if there are no inputs to the property value. | |
| template<typename DataType > | |
| optional< typename PropertyType< DataType >::Traits::ReturnType > | getOptionalPropertyBase (const PropertyType< DataType > &propertyType) const |
| Returns the current value of a property disregarding modifiers, but does not default to the value in property metadata if there are no inputs to the property value. | |
| template<typename DataType > | |
| PropertyType< DataType >::Traits::ReturnType | getProperty (const PropertyType< DataType > &propertyType) const |
| Returns the current value of a property type. | |
| template<typename DataType > | |
| PropertyType< DataType >::Traits::ReturnType | getPropertyBase (const PropertyType< DataType > &propertyType) const |
| Returns the current value of a property disregarding modifiers. | |
| template<typename DataType > | |
| size_t | getPropertyNotificationHandlerCount (const PropertyType< DataType > &propertyType) const |
| Gets number of current notification handlers for given property type. | |
| bool | hasBaseValue (AbstractPropertyType propertyType) const |
| Evaluates whether there are any inputs into the property value, disregarding modifiers. | |
| bool | hasLocalValue (AbstractPropertyType propertyType) const |
| Evaluates whether there is a local value set for the property. | |
| bool | hasNonClassValue (AbstractPropertyType propertyType) const |
| Evaluates whether there is a value of any precedence higher than class default value set for the property. | |
| bool | hasValue (AbstractPropertyType propertyType) const |
| Evaluates whether there are any inputs into the property value. | |
| bool | isPropertyFlagSet (AbstractPropertyType propertyType, uint32_t flag) const |
| virtual void | onPropertyChanged (AbstractPropertyType propertyType, PropertyNotificationReason reason) |
| Virtual function to handle property change notifications. | |
| PropertyObject () | |
| void | removeKzbProperties () |
| Remove all KZB properties. | |
| void | removeKzbProperties (flat_set< AbstractPropertyType > *keepProperties) |
| Remove all KZB properties that are not included in a given set. | |
| template<typename DataType > | |
| void | removeLocalPropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, void *ownerPointer) |
| void | removeLocalValue (AbstractPropertyType propertyType) |
| Removes the local value associated with the property. | |
| template<typename DataType > | |
| void | removePropertyModifier (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner) |
| Removes a property modifier. | |
| template<typename DataType > | |
| void | removePropertyModifierWithoutNotifyingHandlers (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner) |
| Removes a property modifier without notifying handlers. | |
| template<typename DataType > | |
| void | removePropertyNotificationHandler (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::NotificationCallback callback, void *owner) |
| template<typename DataType > | |
| void | removePropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, void *ownerPointer) |
| template<typename DataType > | |
| void | setAbstractProperty (AbstractPropertyType abstractPropertyType, typename PropertyType< DataType >::Traits::ParameterType value) |
| template<typename DataType > | |
| void | setProperty (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Traits::ParameterType value) |
| Sets the local value of a property type. | |
| void | setPropertyFlag (AbstractPropertyType propertyType, uint32_t flag) |
| void | validatePropertyModifiersAndNotifyHandlers (AbstractPropertyType propertyType) |
| Validates property modifiers and notifies handlers. | |
| virtual | ~PropertyObject () |
Static Public Member Functions | |
| static PrefabTemplateNodeSharedPtr | create (Domain *domain, const Metaclass *metaclass, string_view name) |
| Creates a prefab template node that can be instantiated to create a node. | |
| static PrefabTemplateNodeSharedPtr | createPlaceholder (Domain *domain, PrefabTemplateSharedPtr instantiatedPrefab, string_view name) |
| Creates a prefab template node that can be instantiated to create an instance of another prefab template. | |
Static Public Member Functions inherited from kanzi::Object | |
| static const Metaclass * | getStaticMetaclass () |
| Returns the metaclass of Object class. | |
| static PropertyTypeEditorInfoSharedPtr | makeEditorInfo () |
| Default implementation that returns empty editor info. | |
Static Public Member Functions inherited from kanzi::MetaObject | |
| static const Metaclass * | getStaticMetaclass () |
| Returns the metaclass of Object class. | |
| static PropertyTypeEditorInfoSharedPtr | makeEditorInfo () |
| Default implementation that returns empty editor info. | |
Public Attributes | |
| ChildContainer | children |
| Child nodes. | |
| InstanceReferenceContainer | instances |
| Collection of node instances that have been created from this prefab template node. | |
| BindingContainer | m_bindings |
| Bindings to create on the instantiated node. | |
| NodeComponentTemplateContainer | m_nodeComponentTemplates |
| Node component templates from which node components are created for instantiated node. | |
| PropertyContainer | m_properties |
| Properties to write on the instantiated node. | |
| ResourceDictionarySharedPtr | m_resourceDictionary |
| Resource dictionary for the instantiated node. | |
| PrefabTemplateSharedPtr | referencedPrefab |
| Reference to another prefab template if the template node is a prefab placeholder. | |
| PlaceholderReferenceContainer | referencingPlaceholders |
| List of placeholders created to point to the prefab template that owns this prefab template node. | |
| const Metaclass * | typeIdentifier |
| The metaclass of the node. | |
A prefab template node contains information that is required to create node instances: the metaclass of the node, the (initial) property values of the node, information about the bindings and node components of the node, and the list of of child nodes.
Typically prefab templates nodes are defined in Kanzi Studio and loaded from a kzb file as PrefabTemplate resources. A Prefab template contains a tree of prefab template nodes and can be used to instantiate a tree of nodes.
Note that nodes can be created also directly by using the create function in each Node class. You don't necessarily need to use PrefabTemplate or PrefabTemplateNode instances.
A prefab template node can represent either a normal node with a metaclass, or a placeholder that replaces itself with the root of another prefab template when instantiated. Prefab template nodes and their children should always form a simple tree structure. Creating a cycle with prefab placeholders is not allowed.
Container for info on bindings to set into the node.
Container for instance references to add to the node.
Container for node components to create for the node.
Container for prefab placeholders to add to the node.
Container for prefab template node children.
Const iterator into the child container.
Entry of a property to be added to the node.
Container for properties to add to the node.
|
override |
Destructor.
|
explicit |
Constructor.
| domain | The domain of the prefab template node. |
| name | The name of the prefab template node. |
|
static |
Creates a prefab template node that can be instantiated to create a node.
| domain | The domain to use. |
| metaclass | The metaclass of the created node. |
| name | The name of the created node. |
|
static |
Creates a prefab template node that can be instantiated to create an instance of another prefab template.
| domain | The domain to use. |
| instantiatedPrefab | A reference to another prefab that will be instantiated in place of this prefab template node. |
| name | The name of the placeholder node. Overrides the name of the root node of the referenced prefab template. |
| NodeSharedPtr kanzi::PrefabTemplateNode::instantiate | ( | NodeSharedPtr | templateRoot | ) |
Creates a tree of nodes by instantiating a prefab template node and its children.
| templateRoot | A Pointer to an existing node instance that will act as the template root for the instantiated node tree. Any ##Template bindings in the prefab resolve to this node. If the templateRoot is set to nullptr, the newly instantiated root node will act as the template root. |
|
inline |
Adds a binding to the prefab template node.
This binding will be added to the node on creation.
| createInfo | Binding to add. |
|
inline |
Adds a child for the prefab template node.
| child | Child prefab template node. |
|
inline |
Adds a property value to the prefab template node.
| propertyType | Property type to add. |
| value | Property value to add. |
| void kanzi::PrefabTemplateNode::addResourceDictionaryEntry | ( | const ResourceID & | resourceID, |
| string_view | resourceURL ) |
Adds an entry to the resource dictionary of the prefab template node.
If the prefab template node does not have a resource dictionary, this function creates the dictionary first.
| resourceID | The key of the dictionary entry. |
| resourceURL | The value of the dictionary entry. |
Gets the metaclass of the prefab template node.
| void kanzi::PrefabTemplateNode::cleanupInstances | ( | ) |
Cleans up expired elements from instances.
Only used when running inside Kanzi preview. Outside the Kanzi preview does not do anything.
| ChildContainer kanzi::PrefabTemplateNode::children |
Child nodes.
| PrefabTemplateSharedPtr kanzi::PrefabTemplateNode::referencedPrefab |
Reference to another prefab template if the template node is a prefab placeholder.
If the prefab template node is not a placeholder, it needs to have a typeIdentifier.
| InstanceReferenceContainer kanzi::PrefabTemplateNode::instances |
Collection of node instances that have been created from this prefab template node.
Only used when running inside Kanzi preview. Outside the Kanzi preview the container is left empty.
| PlaceholderReferenceContainer kanzi::PrefabTemplateNode::referencingPlaceholders |
List of placeholders created to point to the prefab template that owns this prefab template node.
Only used when running inside Kanzi preview. Outside the Kanzi preview the container is left empty.
| PropertyContainer kanzi::PrefabTemplateNode::m_properties |
Properties to write on the instantiated node.
| BindingContainer kanzi::PrefabTemplateNode::m_bindings |
Bindings to create on the instantiated node.
| NodeComponentTemplateContainer kanzi::PrefabTemplateNode::m_nodeComponentTemplates |
Node component templates from which node components are created for instantiated node.
| ResourceDictionarySharedPtr kanzi::PrefabTemplateNode::m_resourceDictionary |
Resource dictionary for the instantiated node.